package site.yunnong.atvris.service;

import site.yunnong.atvris.dao.domain.User;
import site.yunnong.atvris.dao.domain.UserExample;
import site.yunnong.atvris.common.dto.UserQueryParam;

import java.util.List;

/**
 * 
 *
 * @author zhangjinghao
 * @email jhzhang9102@163.com
 * @date 2021-07-09 23:45:38
 */
public interface UserService  {

    /**
     * 根据用户名查是否存在该用户
     */
    int countUserByUsername(String username);

    /**
     * 根据昵称查是否存在该用户
     */
    int countUserByNickname(String nickname);

    /**
     * 根据用户名获取user
     */
    User queryUserByUsername(String username);

    /**
     * 根据昵称获取user
     */
    User queryUserByNickname(String nickname);

    /**
     * 根据id获取user
     * @param uuid
     */
    User queryByUuid(Long uuid);

    /**
     * 分页条件查询
     * @param param
     * @return
     */
    List<User> queryPage(UserQueryParam param);

    /**
     * 插入新的用户(Selective)
     * @param user
     * @return
     */
    int insert(User user);

    /**
     * 根据id更新(Selective),
     * 包含激活、禁用账号
     * @param user
     * @return
     */
    int update(User user);

    /**
     * 获取当前登录的user
     */
    User getCurrentUser();

    void updateByExampleSelective(User newUser, UserExample userExample);
}

